// 请求失败重连
export const failedReconnection = (error, axios) => {
  // 超出 2xx 范围的状态码都会触发该函数。
  // 对响应错误做点什么
  let config = error.config;
  // 如果配置不存在或未设置重试选项，则拒绝
  // && 如果前面是false，后面的逻辑就不执行，前面逻辑是true的话就往后执行，只有&& 前面和后面的逻辑都是对的，才能继续。
  // || 如果前面逻辑是false的话就走后面，如果前面的逻辑是true的话，就不执行后半部分的代码了。
  if (!config || !config.retry) return Promise.reject(error);
  // 设置变量以跟踪重试次数
  config.__retryCount = config.__retryCount || 0;
  // 判断是否超过总重试次数
  if (config.__retryCount >= config.retry) {
    // 返回错误并退出自动重试
    return Promise.reject(error);
  }
  // 增加重试次数
  config.__retryCount += 1;
  //打印当前重试次数
  console.log(config.url + " 自动重试第" + config.__retryCount + "次");
  // 创建新的Promise
  var backoff = new Promise(function (resolve) {
    setTimeout(function () {
      resolve();
    }, config.retryDelay || 1000);
  });

  // 返回重试请求
  return backoff.then(function () {
    return axios(config);
  });
};
